import request from '@/utils/request'
import { getToken } from '@/utils/auth'
import { Message } from 'element-ui'

/**
 * 根据文件ID获取文件信息
 * 
 * @param {string} fileId 文件ID
 * @returns {Promise} 返回包含文件信息的Promise对象
 */
export function getFileInfo(fileId) {
    return request({
        url: `/file/${fileId}`,
        method: 'get',
    }).then(res => res.data)
}

/**
 * 根据文件ID获取文件URL
 * 
 * 此函数旨在根据提供的文件ID生成相应的文件下载URL如果请求的是Base64编码的形式，
 * 则通过发送GET请求到指定的API端点获取文件如果不需要Base64编码，则构造一个包含文件ID和令牌的URL以供下载
 * 
 * @param {string} fileId - 文件ID，用于定位要下载的文件
 * @param {boolean} isBase64 - 指示是否需要以Base64编码的形式获取文件默认为false
 * @returns {(Promise|String)} - 如果isBase64为true，返回一个Promise对象，用于异步获取Base64编码的文件；
 *                                否则返回一个字符串URL，用于直接下载文件
 */
export function getFileUrl(fileId, isBase64 = false) {
    if (isBase64) {
        return request({
            url: `/download/base64/${fileId}`,
            method: 'get',
            data: {
                isBase64
            }
        })
    } else {
        return `/download/file/${fileId}?ytoken=${getToken()}`
    }
}

// 根据module获取文件限制
export function getFileLimit(module) {
    return request({
        url: `/public/sys/config/upload/${module}`,
        method: 'get'
    }).then(res=>res.data)
}

// 上传单个文件
export function uploadFile(file, module) {
    const data = new FormData();
    data.append("file", file);
    return request({
        url: `/file/uploadOne/${module}`,
        method: 'post',
        data
    }).then(res => {
        const { status,error } = res.data;
        if(!status){
            Message.error(error)
            return null 
        }else{
            return res.data
        }
    })
}